package com.sugon.entity;

import cn.hutool.core.util.StrUtil;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;

import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;

/**
 * 设备信息实体
 * 表名 DEVICE_INFO
 *
 * @author YuXD
 * @date 2022-06-30
 */
@Data
public class DeviceInfoEntity implements Serializable {

    private static final long serialVersionUID = 1L;
    /**
     * 审核状态：0:未审核  1:审核通过 2:审核遭拒
     */
    private String reserve4;
    /**
     * 设备备注
     */
    private String reserve3;
    /**
     * 设备容量
     */
    private String reserve2;
    /**
     * 备用字段1 规格型号
     */
    private String reserve1;
    /**
     * 删除标识
     */
    private Integer delFlag;
    /**
     * 是否关联模具 1是  0否
     */
    private Integer isModuleRelated;

    /**
     * 验收日期
     */
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    private Date checkDate;
    /**
     * 安装日期
     */
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    private Date installDate;
    /**
     * 注册编号
     */
    private String regNo;
    /**
     * 固资编号
     */
    private String firmNo;

    /**
     * ERP编码
     */
    private String erpCode;

    /**
     * 合同编码
     */
    private String devContractCode;
    /**
     * 所属项目
     */
    private String devProject;
    /**
     * 设备类型 1普通设备 2能源设备
     * 取值自：DeviceKind
     */
    private String devKind;
    /**
     * 供应厂家
     */
    private String devSupply;
    /**
     * 供应厂家名字
     */
    private String devSupplyName;

    /**
     * 设备供应商ID
     */
    private String supplierId;
    /**
     * 品牌 废弃
     */
    private String devBrand;
    /**
     * 工序名称
     */
    private String devProceName;
    /**
     * 工序号
     */
    private String devProceNo;
    /**
     * 生产线代码
     */
    private String devProductCode;
    /**
     * 生产线名称
     */
    private String devProductName;
    /**
     * 底层设备码
     */
    private String devLastCode;

    /**
     * 利用率代码
     */
    private String urCode;

    /**
     * 控制系统代码，一般金属加工中心会用到
     */
    private String csCode;

    /**
     * 设备状态  0报废 1完好在用 2闲置
     */
    private String devStatus;
    /**
     * 设备描述
     */
    private String devDescr;
    /**
     * 设备编码
     */
    private String devCode;
    /**
     * 设备名称
     */
    private String devName;
    /**
     * 主键
     */
    private String id;
    /**
     * 大类
     */
    private String devTypeB;
    private String devTypeBName;
    /**
     * 中类
     */
    private String devTypeM;

    private String devTypeMName;
    /**
     * 小类
     */
    private String devTypeS;
    private String devTypeSName;
    /**
     * 所属车间ID
     */
    private String devFarm;
    /**
     * 车间名称
     */
    private String devFarmName;
    /**
     * 是否多个固资编号 已经废弃 2019.11.25
     */
    private Integer moreFirmNo;
    /**
     * 所属工厂
     */
    private String devFactories;
    /**
     * 设备出厂编号
     */
    private String initCode;
    /**
     * 修改时间
     */
    private Date updateDate;
    /**
     * 修改人
     */
    private String updateUser;
    /**
     * 添加时间
     */
    private Date createDate;
    /**
     * 添加人
     */
    private String createUser;

    private String url;

    /**
     * 部门ID编码，这个设备组织有可能是车间、产线、工序
     * 比如生产设备可能挂到产线工序下
     * 特种设备一般车间、甚至工厂级别
     */
    private String deptCode;

    /**
     * 当前寿命
     */
    private Long currentLifeSpan;

    /**
     * 下次保养寿命
     */
    private Long maintenanceLifeSpan;

    /**
     * 设备铭牌地址
     */
    private String nameplate;

    /**
     * 原值
     */
    private BigDecimal originVal;


    /**
     * 净值
     */
    private BigDecimal netWorth;

    /**
     * 获取设备所在的产线ID deptId
     *
     * @return
     */
    public String getWorkshopOrgId() {
        return StrUtil.sub(getDeptCode(), 0, 4);
    }

}

